#匿名函数
#基于 lambda 表达式实现定义一个可以没有名字的函数
#格式为：lambda 参数：函数体
#参数，支持任意；函数体只支持单行的代码；返回值，默认将函数体单行代码执行的 结果返回给函数的调用者
# func=lambda x:x+10
# print(func(10))

#三元运算
# num=input("请写入内容")
# data='yes' if '3' in num else 'no'
# print(data)

# func=lambda x:'大了' if x>6 else '小了'
# v1=func(10)
# print(v1)


#生成器
#生成器是由函数+yied 关键字创造出来的写法，在特定情况下，用它可以帮助我们节省内存
#生成器函数，但是函数中有yield存在时，这个函数就是生产生成器函数
# def func():
#     print("hello world")
#     yield 1 #类似return ,但是只是封存并返回作用
#     print(123)
#     yield 2
#     print(456)
#本质：
"""func()
#执行生成器函数，函数体默认不会被执行，返回值是生成器对象
v1=func()
n1=next(v1) #进入生成器函数，执行函数,反回执行位置
next(v1)
print(n1)
next(v1)"""

# data =func()
# for i in data:
#     print(i)


#应用场景  节省内存开销
#假设要让你生成300w个随机的四位数，并打印出来
#在内存中一次性创建300w个；动态创建，一个一个的创建
import random
# val =random.randint(1000,9999)
# print(val)


# data_list=[]
# for i in range(3000000):
#     val =random.randint(1000,9999)
#     data_list.append(val)

def get_num(max_cout):
    couter=0
    while couter<max_cout:
        yield random.randint(1000,9999)
        couter+=1
data_list=get_num(3000000)
n1=next(data_list)
print(n1)
n2=next(data_list)
print(n2)
n3=data_list.send(None)
print(n3)